// This file was decompiled using vicescm.ini published by ThirteenAG on 06.12.12

{$VERSION 2.2.Mobile}
{$CLEO .cs}

thread 'GATE' 
    
    // set constants
    const
    OBJECT = #od_bighotel_doors // you can use any object you want but make sure it's valid. Use object's IDE number in CLEO instead
    INITI_X = 580.52        // initial x position
    INITI_Y = -364.73       // initial y position
    INITI_Z = 41.92         // initial z position
    ANGLE = 0.0            // angle of your gate
    FINAL_X = 581.34        // final x position
    FINAL_Y = -364.73       // final y position
    FINAL_Z = 41.92         // final z position     

    gate_sfx1 = 1@
    not_clunked_yet = 2@
    gate_sfx2 = 3@
    objectx = 4@
    objecty = 5@
    objectz = 6@
    end     

    // create gate object
    if
    83ca: not object #od_bighotel_doors exists
    then
    029B: 0@ = init_object OBJECT at INITI_X INITI_Y INITI_Z  
    end
    Object.CollisionDetection(0@) = False
    01C7: remove_object_from_mission_cleanup_list 0@
    0177: set_object 0@ z_angle_to ANGLE     
    while true
        wait 250 ms
        if
            0256:   player $PLAYER_CHAR defined
        then
            if
                // use other area check opcodes for more precision and options
                00FE:   actor $PLAYER_ACTOR in_sphere 0 near_point INITI_X INITI_Y INITI_Z radius 1.0 1.0 5.0
            then
                if
                    gate_sfx1 == 0
                then
                    //018C: play_sound 92 at INITI_X INITI_Y INITI_Z // uncomment for III
                    //018C: play_sound 3 at INITI_X INITI_Y INITI_Z  // uncomment for VC
                    //097B: play_audio_at_object 0@ event 1100       // uncomment for SA
                    gate_sfx1 = 1
                end
                while if 834E:   not move_object 0@ to FINAL_X FINAL_Y FINAL_Z speed 0.05 0.05 0.0 flag 0
                    wait 0 ms
                end
                if
                    not_clunked_yet == 1
                then
                    gate_sfx2 = 0
                    not_clunked_yet = 0
                end
                if
                    gate_sfx2 == 0
                then
                    //018C: play_sound 93 at FINAL_X FINAL_Y FINAL_Z // uncomment for III
                    //018C: play_sound 3 at FINAL_X FINAL_Y FINAL_Z  // uncomment for VC
                    //097B: play_audio_at_object 0@ event 1101       // uncomment for SA
                    gate_sfx2 = 1
                end
            else
                if
                    gate_sfx1 == 1
                then
                    //018C: play_sound 92 at FINAL_X FINAL_Y FINAL_Z // uncomment for III
                    //018C: play_sound 3 at FINAL_X FINAL_Y FINAL_Z  // uncomment for VC
                    //097B: play_audio_at_object 0@ event 1100       // uncomment for SA
                end
                while if 834E:   not move_object 0@ to INITI_X INITI_Y INITI_Z speed 0.05 0.05 0.0 flag 1
                    wait 0 ms
                end
                01BB: store_object 0@ position_to objectx objecty objectz
                if
                    gate_sfx2 == 1
                then
                    not_clunked_yet = 1
                    if and
                        objectx == INITI_X
                        objecty == INITI_Y
                        objectz == INITI_Z
                    then
                        //018C: play_sound 93 at INITI_X INITI_Y INITI_Z // uncomment for III
                        //018C: play_sound 3 at INITI_X INITI_Y INITI_Z  // uncomment for VC
                        //097B: play_audio_at_object 0@ event 1101       // uncomment for SA
                        gate_sfx2 = 0
                        not_clunked_yet = 0
                    end
                    gate_sfx1 = 0
                end  
            end
        end
    end